package com.itheima.jvm.memory.methodarea;

import jdk.internal.org.objectweb.asm.ClassWriter;
import jdk.internal.org.objectweb.asm.Opcodes;

public class MaxMetaspaceDemo extends ClassLoader {				// 当前这个类就是一个类加载器
    
    public static void main(String[] args) {
        
        // 定义变量，记录程序产生类的个数
        int j = 0;
        
        try {
            
            MaxMetaspaceDemo test = new MaxMetaspaceDemo();
            
            for (int i = 0; i < 10000; i++, j++) {
                
                // 字节码写入器
                ClassWriter cw = new ClassWriter(0);
                
                // 定义一个类版本为Opcodes.V1_1，它的访问域为public，名称为Class{i},父类为java.lang.Object，不实现任何接口
                cw.visit(Opcodes.V1_1, Opcodes.ACC_PUBLIC, "Class" + i, null, "java/lang/Object", null);
                byte[] code = cw.toByteArray();
                
                // 加载该类
                test.defineClass("Class" + i, code, 0, code.length);
            }
            
        } finally {
            System.out.println(j);
        }
    }
}